package howl.types;

public enum Unit {
	
	/**
	 * hertz: frequency
	 */
	Hz,
	
	/**
	 * radian: angle
	 */
	rad,
	
	/**
	 * steradian: solid angle
	 */
	sr,
	
	/**
	 * newton: force
	 */
	N,
	
	/**
	 * pascal: pressure, stress
	 */
	Pa,
	
	/**
	 * Joule: energy
	 */
	J,

	/**
	 * watt: power
	 */
	W,
	
	/**
	 * coulomb: electric charge
	 */
	C,
	
	/**
	 * volt: Voltage, potential difference, electromotive force
	 */
	V,
	
	/**
	 * farad: electric capacitance
	 */
	F,
	
	/**
	 * Ohm: electric resistance. impedance
	 */
	Ohm,
	
	/**
	 * siemens: electrical conductance
	 */
	S,
	
	/**
	 * webber: magnetic flux
	 */
	Wb,
	
	/**
	 * Telsa: magnetic field strength
	 */
	T,
	
	/**
	 * henry: inductance
	 */
	H,
	
	/**
	 * celcius: temperature
	 */
	Cel,
	
	/**
	 * lumen: luminous flux
	 */
	lm,
	
	/**
	 * lux: illuminace
	 */
	lx,
	
	/**
	 * becquerel: radioactivity
	 */
	Bq,
	
	/**
	 * gray: absorbed dose
	 */
	Gy,
	
	/**
	 * sievert: equivalent dose
	 */
	Sv,
	
	/**
	 * katal: catalytic activity
	 */
	Kat,
	
	/**
	 * area
	 */
	m2,
	
	/**
	 * volume
	 */
	m3,
	
	/**
	 * speed, velocity
	 */
	ms,
	
	/**
	 * volumetric flow
	 */
	m3s,
	
	/**
	 * acceleration
	 */
	ms2,
	
	/**
	 * jerk, jolt
	 */
	ms3,
	
	/**
	 * snap
	 */
	ms4,
	
	/**
	 * angular velocity
	 */
	rads,
	
	/**
	 * momentum
	 */
	Ns,
	
	/**
	 * angular momentum
	 */
	Nms,
	
	/**
	 * newton meter
	 */
	Nm,
	
	/**
	 * Kilogram
	 */
	kg,
	
	/**
	 * gram
	 */
	g,
	
	/**
	 * energy density
	 */
	Jm3,
	
	/**
	 * density
	 */
	kgm3,
	
	/**
	 * specific volume
	 */
	m3kg,
	
	/**
	 * concentration
	 */
	molm3,
	
	/**
	 * molar volume
	 */
	m3mol,
	
	/**
	 * heat capacity
	 */
	Jk,
	
	/**
	 * specific energy
	 */
	JKg,
	
	/**
	 * molar heat capacity
	 */
	Jkmol,
	
	/**
	 * specific heat capacity
	 */
	JKkg,
	
	/**
	 * molar engery
	 */
	Jmol,
	
	/**
	 * heat flux, irradiance
	 */
	Wm2,
	
	/**
	 * thermal conductivity
	 */
	WmK,
	
	/**
	 * kinematic viscosity
	 */
	m2s,
	
	/**
	 * dynamic viscosity
	 */
	Pas,
	
	/**
	 * electric displacement field
	 */
	Cm2,
	
	/**
	 * electric charge density
	 */
	Cm3,
	
	/**
	 * electric current density
	 */
	Am2,
	
	/**
	 * conductivity
	 */
	Sm,
	
	/**
	 * molar conductivity
	 */
	Sm2mol,
	
	/**
	 * permittivity
	 */
	Fm,
	
	/**
	 * permeability
	 */
	Hm,
	
	/**
	 * electric field
	 */
	Vm,
	
	/**
	 * magnetic field
	 */
	Am,
	
	/**
	 * luminance
	 */
	cdm2,
	
	/**
	 * exposure
	 */
	Ckg,
	
	/**
	 * absorbed dose
	 */
	Gys,
	
	/**
	 * resistivity
	 */
	Ohmm,
	
	/**
	 * surface tension
	 */
	jm2,
	
	/**
	 * speed, velocity
	 */
	Kmh,
	
	/**
	 * Percentage
	 */
	percent;
	
	public static Unit valueof(String s){
		
		if(s.equals("Hz")){
			return Unit.Hz;
		} else if(s.equals("radian")){
			return Unit.rad;
		}else if(s.equals("steradian")){
			return Unit.sr;
		}else if(s.equals("newton")){
			return Unit.N;
		}else if(s.equals("pascal")){
			return Unit.Pa;
		}else if(s.equals("joule")){
			return Unit.J;
		}else if(s.equals("watt")){
			return Unit.W;
		}else if(s.equals("C")){
			return Unit.C;
		}else if(s.equals("volt")){
			return Unit.V;
		}else if(s.equals("farad")){
			return Unit.F;
		}else if(s.equals("ohm")){
			return Unit.Ohm;
		}else if(s.equals("siemens")){
			return Unit.S;
		}else if(s.equals("webber")){
			return Unit.Wb;
		}else if(s.equals("tesla")){
			return Unit.T;
		}else if(s.equals("henry")){
			return Unit.H;
		}else if(s.equals("Celsius")){
			return Unit.Cel;
		}else if(s.equals("lumen")){
			return Unit.lm;
		}else if(s.equals("lux")){
			return Unit.lx;
		}else if(s.equals("becquerel")){
			return Unit.Bq;
		}else if(s.equals("gray")){
			return Unit.Gy;
		}else if(s.equals("sievert")){
			return Unit.Sv;
		}else if(s.equals("katal")){
			return Unit.Kat;
		}else if(s.equals("m^2")){
			return Unit.m2;
		}else if(s.equals("m^3")){
			return Unit.m3;
		}else if(s.equals("m/s")){
			return Unit.ms;
		}else if(s.equals("m^3/s")){
			return Unit.m3s;
		}else if(s.equals("m/s^2")){
			return Unit.ms2;
		}else if(s.equals("m/s^3")){
			return Unit.ms3;
		}else if(s.equals("m/s^4")){
			return Unit.ms4;
		}else if(s.equals("rad/s")){
			return Unit.rads;
		}else if(s.equals("Ns")){
			return Unit.Ns;
		}else if(s.equals("Nms")){
			return Unit.Nms;
		}else if(s.equals("Nm")){
			return Unit.Nm;
		}else if(s.equals("kg")){
			return Unit.kg;
		}else if(s.equals("g")){
			return Unit.g;
		}else if(s.equals("kg/m^3")){
			return Unit.kgm3;
		}else if(s.equals("m^3/kg")){
			return Unit.m3kg;
		}else if(s.equals("mol/m^3")){
			return Unit.molm3;
		}else if(s.equals("m^3/mol")){
			return Unit.m3mol;
		}else if(s.equals("J/K")){
			return Unit.Jk;
		}else if(s.equals("J/(Kmol)")){
			return Unit.Jkmol;
		}else if(s.equals("J/(Kkg)")){
			return Unit.JKkg;
		}else if(s.equals("J/mol")){
			return Unit.Jmol;
		}else if(s.equals("J/kg")){
			return Unit.JKg;
		}else if(s.equals("J/m^3")){
			return Unit.Jm3;
		}else if(s.equals("J/m^2")){
			return Unit.jm2;
		}else if(s.equals("W/m^2")){
			return Unit.Wm2;
		}else if(s.equals("W/(mk)")){
			return Unit.WmK;
		}else if(s.equals("m^2/s")){
			return Unit.m2s;
		}else if(s.equals("Pas")){
			return Unit.Pas;
		}else if(s.equals("C/m^2")){
			return Unit.Cm2;
		}else if(s.equals("C/m^3")){
			return Unit.Cm3;
		}else if(s.equals("A/m^2")){
			return Unit.Am2;
		}else if(s.equals("S/m")){
			return Unit.Sm;
		}else if(s.equals("Sm^2/mol")){
			return Unit.Sm2mol;
		}else if(s.equals("F/m")){
			return Unit.Fm;
		}else if(s.equals("H/m")){
			return Unit.Hm;
		}else if(s.equals("V/m")){
			return Unit.Vm;
		}else if(s.equals("A/m")){
			return Unit.Am;
		}else if(s.equals("cd/m^2")){
			return Unit.cdm2;
		}else if(s.equals("C/kg")){
			return Unit.Ckg;
		}else if(s.equals("Gy/s")){
			return Unit.Gys;
		}else if(s.equals("ohm/m")){
			return Unit.Ohmm;
		}else if(s.equals("km/h")){
			return Unit.Kmh;
		}else if(s.equals("percent")){
			return Unit.percent;
		}else {
			return null;
		}
		
	}

	
	public String toString(){
		if(this.equals(Hz)){
			return "Hz";
		} else if(this.equals(rad)){
			return "rad";
		}else if(this.equals(sr)){
			return "sr";
		}else if(this.equals(N)){
			return "N";
		}else if(this.equals(Pa)){
			return "Pa";
		}else if(this.equals(J)){
			return "J";
		}else if(this.equals(W)){
			return "W";
		}else if(this.equals(C)){
			return "C";
		}else if(this.equals(V)){
			return "V";
		}else if(this.equals(F)){
			return "F";
		}else if(this.equals(Ohm)){
			return "Ohm";
		}else if(this.equals(S)){
			return "S";
		}else if(this.equals(Wb)){
			return "Wb";
		}else if(this.equals(T)){
			return "T";
		}else if(this.equals(H)){
			return "H";
		}else if(this.equals(Cel)){
			return "°C";
		}else if(this.equals(lm)){
			return "lm";
		}else if(this.equals(lx)){
			return "lx";
		}else if(this.equals(Bq)){
			return "Bq";
		}else if(this.equals(Gy)){
			return "Gy";
		}else if(this.equals(Sv)){
			return "Sv";
		}else if(this.equals(Kat)){
			return "Kat";
		}else if(this.equals(m2)){
			return "m^2";
		}else if(this.equals(m3)){
			return "m^3";
		}else if(this.equals(ms)){
			return "m/s";
		}else if(this.equals(ms2)){
			return "m/s^2";
		}else if(this.equals(ms3)){
			return "m/s^3";
		}else if(this.equals(ms4)){
			return "m/s^4";
		}else if(this.equals(rads)){
			return "rad/s";
		}else if(this.equals(Ns)){
			return "N·s";
		}else if(this.equals(Nms)){
			return "N·m·s";
		}else if(this.equals(Nm)){
			return "N·m";
		}else if(this.equals(m3kg)){
			return "m^3/kg";
		}else if(this.equals(kgm3)){
			return "kg/m^3";
		}else if(this.equals(molm3)){
			return "mol/m^3";
		}else if(this.equals(m3mol)){
			return "m^3/mol";
		}else if(this.equals(Jk)){
			return "J/K";
		}else if(this.equals(Jkmol)){
			return "J/(K·mol)";
		}else if(this.equals(JKkg)){
			return "J/(K·kg)";
		}else if(this.equals(Jmol)){
			return "J/mol";
		}else if(this.equals(JKg)){
			return "J/Kg";
		}else if(this.equals(Jm3)){
			return "J/m^3";
		}else if(this.equals(jm2)){
			return "J/m^2";
		}else if(this.equals(Wm2)){
			return "W/m^2";
		}else if(this.equals(WmK)){
			return "W/(m·K)";
		}else if(this.equals(m2s)){
			return "m^2/s";
		}else if(this.equals(Pas)){
			return "Pa·s";
		}else if(this.equals(Cm2)){
			return "C/m^2";
		}else if(this.equals(Cm3)){
			return "C/,^3";
		}else if(this.equals(Am2)){
			return "A/m^2";
		}else if(this.equals(Sm)){
			return "S/m";
		}else if(this.equals(Sm2mol)){
			return "Sm^2/mol";
		}else if(this.equals(Fm)){
			return "F/m";
		}else if(this.equals(Hm)){
			return "Hm";
		}else if(this.equals(Vm)){
			return "V/m";
		}else if(this.equals(Am)){
			return "A/m";
		}else if(this.equals(cdm2)){
			return "cd/m^2";
		}else if(this.equals(Ckg)){
			return "C/Kg)";
		}else if(this.equals(Gys)){
			return "Gy/S";
		}else if(this.equals(Ohmm)){
			return "Ω·m";
		}else if(this.equals(Kmh)){
			return "km/h";
		}else if(this.equals(percent)){
			return "%";
		}else{
			return null;
		}
	}
	
}
